在使用 Cloudflare 作為 CDN 與反向代理時,**Cache(快取)**機制是它最核心的功能之一。合理的快取策略不僅能提升網站效能、降低伺服器負載,還能節省頻寬費用。但如果設定不當,則可能引發資安風險與資料洩漏。本文將帶你認識 Cloudflare Cache 的工作原理與潛在的安全議題。
Cloudflare 的快取是以 URL 為基準,同時會依照副檔名來決定是否進行快取。
.jpg
、.png
、.css
、.js
、.woff
等靜態資源。.html
、.php
、.asp
、.aspx
、.cgi
等動態資源,預設會回源。副檔名詳見 官方文件
例如:
https://aaa.example.com/1.jpg
→ 預設會被快取https://aaa.example.com/index.php
→ 預設不會被快取另外需要注意,Cloudflare 預設會將 完整 URL(含 query string) 視為不同資源:
https://aaa.example.com/1.jpg
與https://aaa.example.com/1.jpg?123
雖然檔案一樣,但會被視為兩個不同的快取。這也是許多網站用 ?v=123
來作為 cache busting(強制更新)的原因。
雖然 Cache 能提升效能,但若設定不當,可能會引發嚴重的安全問題:
私有資料被快取
session_id
、token
)的 API 結果快取,可能會導致其他使用者誤取到他人資料。實際案例:ChatGPT Session 洩漏
2023 年有研究者發現,ChatGPT 的 /api/auth/session
API 回應可能被誤以為是靜態資源並被快取,例如透過路徑構造成 https://chat.openai.com/api/auth/session/hack.css
。受害者若被誘導點擊,伺服器的 JSON session 回應就會被快取到邊緣節點,攻擊者再請求同樣的 .css
URL 就能取得使用者的 access token,進而帳號接管。資料來源
教訓:不能只依據副檔名判斷是否快取,對敏感 API 應加上 Cache-Control: no-store
,並在 CDN 層設定 /api/*
等路徑禁止快取,或是不允許在路徑後綴增加任意字元。
Cloudflare Cache 是一把雙面刃:用得好能降低成本、加速存取,用不好則可能讓資料外洩或被濫用。建議在設計快取策略時,將 副檔名規則、效能與安全性 一起考量,並善用 Cloudflare 的 Cache Rules、WAF、防火牆策略,打造高效又安全的網站。
這家就只賣四神湯、刈包,兩個都非常好吃,來湳雅夜市一定要試試看,老闆也很友善,一組加起來110元。